# 1
# 单引号
str1 = '王文龙'
print(str1, type(str1))

# 双引号
str2 = "王文龙"
print(str2, type(str1))

# 三引号可以表示多行数据
str3 = """请选择您要操作的菜单：
1，查询余额
2，存钱
3，取钱"""
print(str3, type(str3))

str4 = '''请选择您要操作的菜单：
1，查询余额
2，存钱
3，取钱'''
print(str4, type(str4))
print()

# 单引号和双引号的区别
message1 = "I'm Teacher Liu!\n"
message2 = 'I\'m Teacher Liu!\n'
message3 = "I'm\tTeacher Liu\n"
# r  表示原生raw => 转义字符不会出现作用
message4 = r"I'm\tTeacher Liu!\n"
print(message1, message2, message3,message4)

# 2
# 字符串时字符序列
# 如何取值呢？凡是序列数据，大部分都可以通过下标（索引）或切片取值
message = "wang wen long"
# [] => 取值
# 下标取值 => 从0开始取一个字符
print(message[0])
print(message[1])
print(message[2])
# 负数下标是从右向左取值
print(message[-1])

# 切片 => 取一串字符
# 切字符串中位置是开始到3的字符串
print(message[:4])
# 切字符串中位置是5到7的字符串
print(message[5:8])
# 切字符串中位置是9到最后的字符串
print(message[9:])
# 切片不会有越界的问题
print(message[:1000])
print()

print(message[-4:])
print(message[:-1])
print(message[-4:-1])
print()

# 3
# 字符串是不可变数据
# message = "hello"
# message[0] = 'H'
# 这个是错误的无法修改
# 但是可以重新申请地址存储
message = "hello"
print(message)
message = "HELLO"
print(message)
print()

# 赋值的偏方法
message = "hello!", "wangwenlong"
print(message)
print(message[0])
# 输出的是
# ('hello!', 'wangwenlong')
# hello!


message = "hello!" "wangwenlong"
print(message)
print(message[0])
# 输出的是
# hello!wangwenlong
# h